import cv2
import numpy as np
#查找轮廓
img=cv2.imread('cycle.png')        						#读取图像
cv2.imshow('original',img)  	    						#显示原图像
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)				#将其转换为灰度图像
ret,img2=cv2.threshold(gray,125,255,cv2.THRESH_BINARY)			#二值化阈值处理
c,h=cv2.findContours(img2,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)	#查找轮廓
print('轮廓：',c)
print('轮廓类型：',type(c))
print('轮廓个数：',len(c))
print('层次：',h)
print('层次类型：',type(h))
# 循环修改为只处理存在的轮廓
for n in range(min(3, len(c))):
    img3 = np.zeros(img.shape, np.uint8) + 255                # 按原图大小创建一幅白色图像
    cv2.polylines(img3, [c[n]], True, (255,0,0), 2)           # 绘制轮廓
    cv2.imshow('%s' % n, img3)                                # 显示轮廓图像
cv2.waitKey(0)                                  				#按任意键结束等待
cv2.destroyAllWindows()                         				#关闭所有窗口

#绘制轮廓
img=cv2.imread('cycle.png')       	 				#读取图像
cv2.imshow('original',img)  	    					#显示原图像
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)				#将其转换为灰度图像
ret,img2=cv2.threshold(gray,125,255,cv2.THRESH_BINARY)			#二值化阈值处理
c,h=cv2.findContours(img2,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)	#查找轮廓
img3=np.zeros(img.shape, np.uint8)+255 	    				#按原图大小创建一幅白色图像
img3=cv2.drawContours(img3,c,-1,(0,0,255),2)    				#绘制轮廓
cv2.imshow('Contours',img3)  	                				#显示轮廓图像
cv2.waitKey(0)                                  					#按任意键结束等待
cv2.destroyAllWindows()